package com.xyzyzglxt.system.service;

import java.util.List;

import com.xyzyzglxt.common.core.domain.TreeSelect;
import com.xyzyzglxt.common.core.domain.vo.NumNowdayVo;
import com.xyzyzglxt.system.domain.SysEvent;
import com.xyzyzglxt.common.core.domain.vo.EventCheckVo;
import com.xyzyzglxt.common.core.domain.vo.EventStateVo;

/**
 * 活动信息Service接口
 *
 * @author xyzyzglxt
 * @date 2022-01-17
 */
public interface ISysEventService
{
    /**
     * 查询活动信息
     *
     * @param eventId 活动信息主键
     * @return 活动信息
     */
    public SysEvent selectSysEventByEventId(Long eventId);

    /**
     * 查询活动信息列表
     *
     * @param sysEvent 活动信息
     * @return 活动信息集合
     */
    public List<SysEvent> selectSysEventList(SysEvent sysEvent);


    /**
     * 查询已审核的活动信息
     * @param sysEvent
     * @return
     */
    public List<SysEvent> selectCheckSysEventList(SysEvent sysEvent);

    /**
     * 新增活动信息
     *
     * @param sysEvent 活动信息
     * @return 结果
     */
    public int insertSysEvent(SysEvent sysEvent);

    /**
     * 修改活动信息
     *
     * @param sysEvent 活动信息
     * @return 结果
     */
    public int updateSysEvent(SysEvent sysEvent);

    /**
     * 批量删除活动信息
     *
     * @param eventIds 需要删除的活动信息主键集合
     * @return 结果
     */
    public int deleteSysEventByEventIds(Long[] eventIds);

    /**
     * 删除活动信息信息
     *
     * @param eventId 活动信息主键
     * @return 结果
     */
    public int deleteSysEventByEventId(Long eventId);

    /**
     * 审核不通过
     * @param sysEvent
     * @return
     */
    int FailSysEvent(SysEvent sysEvent);

    /**
     * 审核通过
     * @param sysEvent
     * @return
     */
    int SuccessSysEvent(SysEvent sysEvent);

    /**
     * 获取活动下拉树列表
     */
    List<TreeSelect> buildEventTreeSelect(List<SysEvent> sysEvents);

    /**
     * 上传(更新)活动图片
     * @param url
     * @param eventId
     * @return
     */
    int updateSysEventImg(String url, Long eventId);


    /**
     * 返回活动状态及名称
     * @return
     */
    List<EventStateVo> eventState();

    /**
     * 返回活动审核名称
     *
     * @return
     */
    default List<EventCheckVo> eventCheckInfo() {
        return null;
    }

    /**
     * 当天时间活动数and报名人数
     * @return
     */
    List<NumNowdayVo> findNumByNowday();
}
